数组初始化

  数组可以用一系列值进行初始化。例如,

    int v1[] = { 1, 2, 3, 4 };
    char v2[] = { 'a', 'b', 'c', 0 };

当数组声明中没有给出数组大小,但是有初始式列表时,数组的大小就通过数出列表中元素个数的方式确定。因此,v1和v2的类型分别是int[4]和char[4]。如果明确给出了大小,在初始化列表中给了多余的元素就是错误。例如,

    char v3[2] = { 'a', 'b', 0 };        // 错误❌:初始式太多
    char v4[3] = { 'a', 'b', 0 };        // 可以

如果初始式列表里的元素太少,剩余的元素将被设定为0。例如,

int v5[8] = { 1, 2, 3, 4 };

等价于

int v5[] = { 1, 2, 3, 4, 0, 0, 0, 0 };

请注意,并不存在与数组初始化相对应的数组赋值:

    void f()
    {
        v4 = { 'c', 'd', 0 };    // 错误❌:没有数组赋值
    }

如果你需要用这种赋值,请使用vector(16.3节)或者valarray(22.4节)。

  字符的数组可以很方便地用字符串文字量(5.2.2节)进行初始化。

🔚